microsoftfandomcom_ru-20200214-history
COMMAND.COM
COMMAND.COM — интерпретатор командной строки в операционных системах DOS, OS/2, семейства Windows 9x и ряда других. Загружается при старте системы или VDM (если не указан другой интерпретатор с помощью директивы SHELL= в файле CONFIG.SYS) и выполняет команды из файла AUTOEXEC.BAT. В операционных системах семейства Windows NT (начиная с Windows NT 3.1 и заканчивая Windows 8 / Windows Server 2012) и OS/2 интерпретатором командной строки является программа cmd.exe. Однако, для совместимости с DOS-приложениями, COMMAND.COM присутствует и в версиях этих систем для процессоров архитектуры IA-32. Режимы работы COMMAND.COM имеет два режима работы. Первый режим — интерактивный, когда пользователь вводит с клавиатуры команды, которые немедленно выполняются. Второй режим — пакетный, когда COMMAND.COM выполняет последовательность команд, заранее сохранённую в пакетном файле с расширением .BAT. Функции COMMAND.COM аналогичны функциям командных интерпретаторов Unix-совместимых операционных систем (например, bash), с тем отличием, что COMMAND.COM имеет более ограниченный набор возможностей. |date=июнь 2003|accessdate=16 января 2010|lang=en|quote=The stock shell, `command.com', is ridiculously limited in its functionality and many users of make tend to install a replacement shell}}«batch files are much more limited than their UNIX counterparts» // Команды Команды COMMAND.COM делятся на внутренние, и внешние. Внутренние команды поддерживаются самим COMMAND.COM, внешние команды являются файлами, которые хранятся на дисках и имеют расширение .COM, .EXE или .BAT. Часть внутренних команд используются в пакетных файлах для их оформления, организации их работы и для управления последовательностью выполнения прочих команд. Среди них: ; :имя_метки : Задание имени метки для команды GOTO. Часто используется и в качестве комментария. ; FOR : Повтор некоторой команды для каждого файла из заданного списка. ; GOTO : Переход к метке внутри пакетного файла. ; REM : Комментарий: любой текст в строке после этой команды игнорируется. ; IF : Задание условия, в зависимости от которого происходит выполнение разных команд. ; CALL : Приостановка выполнения текущего командного файла, запуск другого, по окончании работы вызванного файла возобновление выполнения текущего файла.Если вызвать из пакетного файла другой пакетный файл напрямую, без помощи команды CALL, то возврата из вызванного пакетного файла не будет, он заменит первый пакетный файл. ; START : Запуск исполняемого или командного файла, указанного в параметре этой команды, без ожидания завершения его выполнения (только под Windows). Переменные Пакетные файлы для COMMAND.COM имеют четыре типа переменных: # ERRORLEVEL содержит код возврата последней из запущенных программ (к примеру, в языке программирования Си код можно вернуть с помощью return в функции main). Как правило, ERRORLEVEL используется для индикации ошибок при работе программы и код 0 означает успешное завершение. Но это относится в основном к утилитам командной строки (которые ориентированы на использование в пакетных файлах), прикладные программы обычно не заботятся о возврате конкретных значений, поэтому после них в ERRORLEVEL всегда оказывается нулевое значение или даже мусор. В оригинальном COMMAND.COM код возврата можно было проверить только с помощью конструкции IF ERRORLEVEL , однако в некоторых клонах DOS, а также Windows семейства NT, добавлена возможность обращения к ERRORLEVEL как к обычной переменной. # Переменные могут быть заданы с помощью команды SET. Чтобы получить их значение, нужно имя переменной окружить знаками % (например, %path%), в этом случае в месте использования такой конструкции будет подставлено значение переменной. Некоторые из этих переменных стандартизованы (PROMPT, PATH, TEMP и т. п.), некоторые задаются системой (CONFIG), остальные задаются и используются пользователями. Хранятся эти переменные в «окружении» (environment) и называются «переменными окружения». # Аргументы пакетных файлов в самих пакетных файлах доступны как %1…%9. Переменная %0 содержит текст команды (без аргументов), использованной для запуска пакетного файла. # Переменные для команды FOR имеют вид %%a и используются в пакетных файлах совместно с этой командой. Параметры командной строки COMMAND.COM может быть запущена не только в ходе начальной загрузки, но и, подобно любому исполняемому файлу MS-DOS, другой программой с помощью стандартной функции MS-DOS EXEC (функция 4bH прерывания 21H). При запуске без параметров запускается экземпляр интерпретатора, и управление передаётся пользователю, который может закрыть этот экземпляр и вернуть управление породившей его программе, введя команду EXIT. Но намного чаще используется запуск COMMAND.COM из других программ с параметрами /C и (реже) /K. Параметр /C Параметр /C предназначен для запуска в пакетном режиме. Синтаксис запуска: COMMAND.COM /C команда Командой может быть любая внутренняя или внешняя команда COMMAND.COM, в том числе BAT-файл. После исполнения команды работа COMMAND.COM завершается, и управление возвращается породившей его программе. Параметр /K Параметр /K полностью аналогичен параметру /C с той разницей, что после исполнения команды экземпляр интерпретатора не завершается, и управление передаётся пользователю, который может закрыть этот экземпляр и вернуть управление породившей его программе, введя команду EXIT. См. также * Сравнение командных оболочек Примечания Ссылки * Урок bat-аники RSDN * Категория:DOS Категория:Программы с интерфейсом командной строки Категория:Командные оболочки